package com.xpffly.design.composite.common.service.impl;

import com.xpffly.design.composite.common.service.Component;

import java.util.ArrayList;

/**
 * @Author: 午夜学徒
 * @Date: 2022/3/26 11:22
 * @Description：树枝构件（其下节点可能是叶子构件也可能是树枝构件）
 */
public class Composite extends Component {
    /**
     * 构件容器
     */
    private ArrayList<Component> componentArrayList = new ArrayList<Component>();

    /**
     * 添加一个叶子构件或者树枝构件
     *
     * @param component
     */
    public void add(Component component) {
        this.componentArrayList.add(component);
    }

    /**
     * 移除一个叶子构件或 树枝构件
     *
     * @param component
     */
    public void remove(Component component) {
        this.componentArrayList.remove(component);
    }

    /**
     * 获得分支下的所有叶子构件和树枝构件
     *
     * @return
     */
    public ArrayList<Component> getChildren() {
        return this.componentArrayList;
    }
}
